Remote desktop technologies allow a local user interacting with a local computer to control and view a remote desktop session originating from a remote computer. The local computer is commonly referred to as a remote desktop client computer, or simply a “client computer”, while the remote computer is commonly referred to as a remote desktop server computer, or “server computer.” A remote desktop client application running on the client computer and a remote desktop server application running on the server computer together facilitate “remoting” a desktop session. The remote desktop client application receives user input, such as keyboard and mouse input, and converts the input into a network-compatible representation to be transmitted to the server computer. The remote desktop server application running on the server computer receives the network-compatible representation of the user input, and converts this representation into actual input messages. The input messages are then sent to the server computer's message queue and processed as if the input was generated at the server computer. Therefore, applications running on the server computer respond to the input as if the input was generated at the server computer.
In addition, applications running on the server computer (as well as the operating system running on the server computer) periodically generate graphics output. In the remote desktop scenario, the server computer's graphics output is not displayed on a monitor or other viewing device attached to the server computer. Instead, the remote desktop server application converts the graphics output to a network-compatible representation and transmits the representation to the client computer. The network-compatible representation is received by the remote desktop client application and displayed to the user on a monitor or other device attached to the client computer. In this way, the graphics output of the server computer is displayed on a monitor attached to the client computer.
Traditionally, screen scraping remote desktop technologies have transmitted data representing the server computer's graphics output by directly copying regions of the server computer's graphics output to the client computer. Typically, regions are only copied if the content of the region has changed since the previous copy was transmitted. A continuing need exists for a technique to increase screen scraping remote desktop performance and responsiveness.